package com.dragon.modules.yuegou.enums;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 商品类型
 * 
 * @author pbuilder generated
 *
 */
public enum SkuType {

	/**
	 * 悦卡
	 */
	YUECARD(0, "悦卡"),
	/**
	 * 套餐
	 */
	PACKAGE(1, "套餐"),
	/**
	 * 商户停车券
	 */
	PARKCOUPON(2, "商户停车券"),
	/**
	 * 积分停车券
	 */
	POINTPARKCOUPON(3, "积分停车券"),
	/**
	 * 实物
	 */
	GOODS(4, "实物"),
	/**
	 * 积分商品
	 */
	POINTGOODS(5, "积分商品"),
	/**
	 * 伪造商品
	 */
	MOCK(6, "伪造商品"),
	/**
	 * 奖品
	 */
	PRIZE(7, "奖品"),
	/**
	 * 优惠券
	 */
	DISCOUNTCOUPON(8, "优惠券"),
	/**
	 * 礼包
	 */
	GIFTBAG(9, "礼包"),

	/**
	 * 免费商品/卷
	 */
	FREE(10, "免费商品/卷");

	/**
	 * 枚举标识
	 */
	private final Integer code;

	/**
	 * 别名
	 */
	private final String alias;

	private SkuType(Integer code, String alias) {
		this.code = code;
		this.alias = alias;
	}

	public Integer getValue() {
		return code;
	}

	/**
	 * 枚举标识
	 * 
	 * @return code
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 别名
	 * 
	 * @return alias
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 把code转化为费用类型枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	public static SkuType from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for SkuType
	 */
	private static final Map<Integer, SkuType> CODE_MAP = Stream.of(SkuType.values())
			.collect(Collectors.toMap(SkuType::getCode, e -> e));

}
